package nl.saxion.saktiehuis.service;

import java.util.ArrayList;
import java.util.List;

import nl.saxion.saktiehuis.dao.OrderDao;
import nl.saxion.saktiehuis.model.Order;
import nl.saxion.saktiehuis.model.Product;
import nl.saxion.saktiehuis.util.AbstractDao;
import nl.saxion.saktiehuis.util.AbstractServiceImpl;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class OrderServiceImpl extends AbstractServiceImpl<Order> implements
		OrderService {

	@Autowired
	private OrderDao orderDao;

	@Override
	public AbstractDao<Order> getDao() {
		return orderDao;
	}

	@Override
	public List<Order> getOrdersVoorKlant(String klantNaam) {
		return orderDao.getOrdersVoorKlant(klantNaam);
	}

	@Override
	public Order getOrderById(int id) {
		return orderDao.getOrderById(id);
	}

	@Override
	public void bestel(Product product, Order order, int aantal) {
		List<Product> producten = order.getProducten();
		if (producten == null) {
			producten = new ArrayList<Product>();
		}
		for (int i = 0; i < aantal; i++) {
			producten.add(product);
		}
		order.setProducten(producten);
		orderDao.saveOrUpdate(order);
	}

	@Override
	public Order bevestig(int orderNummer) {
		Order order = orderDao.getOrderById(orderNummer);
		if (order != null && !order.isDefinitief()) {
			order.setDefinitief(true);
			orderDao.saveOrUpdate(order);
			return order;
		}
		return null;
	}
}
